home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / snip0493.zip / ISFOPEN.C < prev    next >
C/C++ Source or Header  |  1993-04-05  |  815b  |  42 lines

  1. /*
  2. **  Find out if a FILE * is valid
  3. **
  4. **  public domain demo by Bob Stout
  5. */
  6.  
  7. #include <stdio.h>
  8.  
  9. #ifdef __TURBOC__
  10.  #define STREAM_BUF     _streams
  11.  #define FCNT           FOPEN_MAX
  12.  #define FLAG           flags
  13. #else /* MSC, ZTC++ */
  14.  #define STREAM_BUF     _iob
  15.  #define FCNT           _NFILE
  16.  #define FLAG           _flag
  17. #endif
  18.  
  19. typedef enum {FALSE, TRUE} LOGICAL;
  20.  
  21. int isfopen(FILE *fp)
  22. {
  23.       int i;
  24.  
  25.       for (i = 0; i < FCNT; ++i)
  26.       {
  27.             if (0 != STREAM_BUF[i].FLAG && fp == &STREAM_BUF[i])
  28.                   return TRUE;
  29.       }
  30.       return FALSE;
  31. }
  32.  
  33. #ifdef TEST
  34.  
  35. void main(void)
  36. {
  37.       printf("stdout is%s valid\n", isfopen(stdout) ? "":" not");
  38.       printf("buffer #10 is%s valid\n", isfopen(&STREAM_BUF[9]) ? "":" not");
  39. }
  40.  
  41. #endif /*TEST */
  42.